Streaming media systems transmit media data, such as video and audio data, over wired and/or wireless networks. Data transmitted over such networks can experience delays along the way, perhaps arriving late at a destination node. In some instances, data may be lost and retransmitted.
The effects of late or lost data may be exacerbated for video data that are predictively encoded (compressed). Video frames are preferably received before their display (playback) times. With predictive encoding, the decoding of a frame of data may rely on the information in another frame, and therefore some frames need to be received earlier than their display time so that they can be used to decode other frames. For example, with MPEG (Moving Pictures Experts Group) encoding, a P-frame is predicted from a preceding P-frame or I-frame, and a B-frame is predicted from two preceding P-frames or a preceding I-frame and P-frame (for streams stored in their encoded order).
Different types of frames have different transmission time requirements; for example, an I-frame may be larger and therefore may take longer to transmit than a P-frame or B-frame. Also, frames may encounter different length delays as they travel through the network, depending on the path they travel. Different paths may have different propagation delays, and nodes (e.g., intermediate servers or routers) along one path may introduce different queuing delays than the nodes along another path. Even frames traveling through the same node may experience different queuing delays, because the length of the queue at a node can grow or shrink with time. In general, the variation in delay experienced by individual frames can be quite large over a network.
Predictive encoding introduces dependencies in the encoded data that improve the amount of compression but can also result in error propagation in the event of data loss or late arrival. In networks with significant delay variations, some encoded video frames may arrive late at the decoder (e.g., a client or destination node). These frames may not only miss their respective display deadlines, but they may also prevent a number of other, subsequent frames from being displayed properly.
If, for example, an I-frame or P-frame arrives late or is lost, then it might not be possible to decode and display a subsequent P-frame or B-frame. In the case in which a P-frame cannot be decoded because a preceding I-frame or P-frame is absent, other subsequent frames dependent on that P-frame may not be decoded. Thus, a number of frames may be prevented from being properly decoded and displayed due to a single late or missing frame, depending on the particular coding dependencies of the late or missing frame. This can affect the overall quality of the display.
In summary, popular and effective encoding techniques such as MPEG encoding rely on the relationships between frames for decoding. Thus, if a frame is late, the decoding of other frames may be affected, possibly affecting the quality of the video display. Techniques such as MPEG encoding are useful in some applications. However, because of the dependency between frames, the application of MPEG encoding in streaming networks, the Internet, content delivery networks, etc.—especially networks that may experience significant delay variations—can be problematic.